package model

import (
	"common/global"
	"gorm.io/gorm"
	"time"
)

type Registration struct {
	RegistrationId        int            `gorm:"column:registration_id;type:int;comment:挂号 ID;primaryKey;not null;" json:"registration_id"`                     // 挂号 ID
	PatientId             int            `gorm:"column:patient_id;type:int;comment:患者 ID;not null;" json:"patient_id"`                                          // 患者 ID
	DoctorId              int            `gorm:"column:doctor_id;type:int;comment:医生 ID;not null;" json:"doctor_id"`                                            // 医生 ID
	RegistrationTime      time.Time      `gorm:"column:registration_time;type:datetime;comment:挂号时间;not null;" json:"registration_time"`                        // 挂号时间
	AppointmentDate       time.Time      `gorm:"column:appointment_date;type:date;comment:就诊日期;not null;" json:"appointment_date"`                              // 就诊日期
	AppointmentTimePeriod int            `gorm:"column:appointment_time_period;type:int;comment:就诊时间段 1上午 2下午 晚上;not null;" json:"appointment_time_period"`     // 就诊时间段 1上午 2下午 晚上
	RegistrationType      int            `gorm:"column:registration_type;type:int;comment:挂号类型 1普通号 2专家号;not null;" json:"registration_type"`                   // 挂号类型 1普通号 2专家号
	RegistrationStatus    int            `gorm:"column:registration_status;type:int;comment:挂号状态1已挂号 2未挂号 3已取消;not null;default:1;" json:"registration_status"` // 挂号状态1已挂号 2未挂号 3已取消
	Remarks               string         `gorm:"column:remarks;type:text;comment:备注信息;" json:"remarks"`                                                         // 备注信息
	CreateAt              time.Time      `gorm:"column:create_at;type:datetime(3);default:CURRENT_TIMESTAMP(3);" json:"create_at"`
	UpdateAt              time.Time      `gorm:"column:update_at;type:datetime(3);default:CURRENT_TIMESTAMP(3);" json:"update_at"`
	DeleteAt              gorm.DeletedAt `gorm:"column:delete_at;type:datetime(3);default:NULL;" json:"delete_at"`
}

func (Registration) TableName() string {
	return "registration"
}

func (r Registration) Create() error {
	err := global.Db.Create(&r).Error
	return err
}
